home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / Libraries / DCLAP 6d / dclap6d / DBio / DAsmSequence.cpp_copy < prev    next >
Text File  |  1996-07-05  |  3KB  |  146 lines

  1. // DAsmSequence.cp 
  2. // d.g.gilbert
  3.  
  4.  
  5.  
  6. #include "DAsmSequence.h"
  7. #include "DSeqFile.h"
  8. #include "DSeqList.h"
  9. #include "DREnzyme.h"
  10. #include <ncbi.h>
  11. #include <dgg.h>
  12. #include <DUtil.h>
  13. #include <DFile.h>
  14. #include "ureadseq.h"
  15.  
  16.  
  17.  
  18. // same in DSequence !?
  19. Local char* gAminos        =    "ABCDEFGHIKLMNPQRSTVWXYZ*_.-~?";
  20. Local char* gIubbase    = "ACGTUMRWSYKVHDBXN_.-*~?";     //did include ".", for what?
  21. Local char* gPrimenuc    = "ACGTU_.-*~?";
  22. Local char* protonly    = "EFIPQZ";
  23. Local char* stdsymbols= "_.-*?";
  24. Local char* allsymbols= "_.-*?!=/**/[]()!&#$%^&=+;:/|`~'\"\\";
  25. Local char* seqsymbols= allsymbols;
  26.  
  27.  
  28.  
  29.  
  30.  
  31.  
  32. // DAsmSequence -----------------
  33.  
  34.  
  35. DAsmSequence::DAsmSequence()
  36. {
  37.     for (short t=kA; t<maxTrace; t++) { fTrace[t]= NULL; fTraceNum[t]= 0; }
  38.   fNTrace= 0;
  39.   fTrCenter= NULL;
  40.   fTrlength= 0;
  41.     fShowTrace = TRUE;
  42. }
  43.  
  44. DAsmSequence::~DAsmSequence()  
  45. {
  46.     for (short t=kA; t<maxTrace; t++) MemFree(fTrace[t]);
  47.     MemFree(fTrCenter);
  48. }
  49.  
  50. DObject* DAsmSequence::Clone() // override 
  51. {    
  52.     DAsmSequence* aSeq= (DAsmSequence*) DSequence::Clone();
  53.     for (short t=kA; t<maxTrace; t++) {
  54.         aSeq->fTrace[t]= NULL; 
  55.         aSeq->SetTrace( (traceNum)t, fTrace[t], fTraceNum[t], true);  
  56.         }
  57.     aSeq->fTrCenter= NULL; aSeq->SetTrCenter( fTrCenter, fTrlength, true); 
  58.     return aSeq;
  59. }
  60.  
  61. void DAsmSequence::CopyContents( DAsmSequence* fromSeq)
  62. {
  63.     DSequence::CopyContents( fromSeq);
  64.     for (short t=kA; t<maxTrace; t++) {
  65.         SetTrace( (traceNum)t, fromSeq->fTrace[t], fromSeq->fTraceNum[t], true);  
  66.         }
  67.     SetTrCenter( fromSeq->fTrCenter, fromSeq->fTrlength, true); 
  68. }
  69.  
  70. void DAsmSequence::SetTrCenter( short*& theTrCenter, long trlength, Boolean duplicate)
  71. {
  72.     if (fTrCenter) { 
  73.         if (fTrlength>0 && 
  74.             (fTrlength != trlength || MemCmp( theTrCenter, fTrCenter, trlength)!= 0))
  75.                 fChanged= TRUE;
  76.         MemFree(fTrCenter); 
  77.         fTrCenter= NULL; 
  78.         fTrlength= 0;
  79.         }
  80.     if (theTrCenter) {
  81.         if (duplicate) fTrCenter = (short*)MemDup(theTrCenter, trlength); 
  82.         else { fTrCenter= theTrCenter; theTrCenter= NULL; }
  83.         fTrlength= trlength;  
  84.         }
  85.     fModTime= gUtil->time();
  86. }
  87.  
  88. void DAsmSequence::SetTrace(traceNum t, short*& theTrace, long trlength, 
  89.             Boolean duplicate)
  90. {
  91.     if (fTrace[t]) { 
  92.         if (fTraceNum[t]>0 && 
  93.             (fTraceNum[t] != trlength || MemCmp( theTrace, fTrace[t], trlength)!= 0))
  94.                 fChanged= TRUE;
  95.         MemFree(fTrace[t]); 
  96.         fTrace[t]= NULL; 
  97.         fTraceNum[t]= 0;
  98.         }
  99.     if (theTrace) {
  100.         if (duplicate) fTrace[t] = (short*)MemDup(theTrace, trlength); 
  101.         else { fTrace[t]= theTrace; theTrace= NULL; }
  102.         fTraceNum[t]= trlength;  // what if trlengths differ for each trace -- error !!  
  103.         }
  104.     fNTrace= 0;
  105.     for (short i=kA; i<maxTrace; i++) fNTrace= Max(fTraceNum[i], fNTrace);
  106.     fModTime= gUtil->time();
  107. }
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114. void DAsmSequence::DoWrite(DFile* aFile, short format)
  115. {  
  116.     DSequence::DoWrite( aFile, format);
  117. #if 0    
  118.     if (fLength>0) {
  119.         DSeqFile::WriteSeqWrapper( aFile, fBases, fLength, format, fName);
  120.         if (fMasks && fMasksOk && DSeqFile::gWriteMasks) 
  121.             DSeqFile::WriteMaskWrapper( aFile, fMasks, fLength, format, fName);
  122.         }
  123. #endif
  124. }
  125.  
  126.  
  127. void DAsmSequence::DoWriteSelection(DFile* aFile, short format)
  128. {
  129.     DSequence::DoWriteSelection( aFile, format);
  130. #if 0    
  131.     if (fSelBases==0) 
  132.         DoWrite( aFile, format);
  133.     else if (fLength>0) {
  134.         long aStart= Min( fSelStart, fLength);
  135.         long aLength= Min( fSelBases, fLength - fSelStart);
  136.         DSeqFile::WriteSeqWrapper(  aFile, fBases+aStart, aLength, format, fName);
  137.         if (fMasks && fMasksOk && DSeqFile::gWriteMasks)  
  138.             DSeqFile::WriteMaskWrapper( aFile, fMasks+aStart, aLength, format, fName);
  139.         }
  140. #endif
  141. }
  142.  
  143.  
  144.  
  145.  
  146.